A block cipher is a cryptographic algorithm that encrypts or decrypts a fixed number of bits at a time, typically sixty-four or one-hundred and twenty-eight bits. The most common block ciphers in current use are the Data Encryption Standard (DES) and the Advanced Encryption Standard (AES). A block cipher “mode” is a convention for extending a block cipher so that it can process two or more blocks of data. Modes are typically designed to ensure that two or more input blocks that contain copies of the same data are encrypted differently, so that when the same data is encrypted more than once, this fact is not detectable by an unauthorized reader.
Many such modes have been published, each with its individual advantages and disadvantages. For example, the National Institute of Standards and Technology (NIST) published “SP 800-38A,” in which five modes (named Electronic Code Book, Counter Mode, Cipher Block Chaining Mode, Output Feedback Mode, and Cipher Feedback Mode) are defined and recommended. These modes have been widely adopted, and are graphically depicted in FIGS. 1 through 5, respectively. Various communication and storage protocol standards specify the use of a particular one of these different modes.
There is a need, therefore, for computing devices that implement block cipher modes. Each of these computing devices falls into one of two basic categories, being (1) software running on a general-purpose computer, and (2) special-purpose hardware.
The disadvantage of software running on a general-purpose computer is that it tends to be relatively slow. The disadvantage of existing special-purpose hardware is that there are many different modes, and a different hardware set tends to be needed to implement each different mode, so hardware solutions typically support only one mode or a small number of modes. Furthermore, new modes are continuing to be invented, and modifying an existing circuit design to support an additional mode typically involves extensive—and expensive—rework.
What is needed, therefore, is a system that overcomes problems such as those described above, at least in part.